package com.ruoyi.finance.service;

import com.ruoyi.IndexDtoByThree;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.finance.dto.IndexReceiveReqDto;
import com.ruoyi.system.api.domain.finance.ReciveReq;

import java.math.BigDecimal;
import java.util.List;

/**
 * 应收需求单Service接口
 *
 * @author wl
 * @date 2024-11-01
 */
public interface IReciveReqService {
    /**
     * 查询应收需求单
     *
     * @param id 应收需求单主键
     * @return 应收需求单
     */
    public ReciveReq selectReciveReqById(Integer id);
    public IndexDtoByThree getReceiveReqThreeCountToIndex();

    /**
     * 查询当前所有未核销金额
     */
    public BigDecimal getAllAmount();
    /**
     * 查询应收需求单列表
     *
     * @param reciveReq 应收需求单
     * @return 应收需求单集合
     */
    public List<ReciveReq> selectReciveReqList(ReciveReq reciveReq);
    /**
     * 查询当天新增销售应收数量及金额
     *
     */
    public IndexReceiveReqDto getSaleOrderReciveCountAndMoney();
    /**
     * 查询当天新增采购退货应收数量及金额
     *
     */
    public IndexReceiveReqDto getBuyBackReciveCountAndMoney();
    /**
     * 新增应收需求单
     *
     * @param reciveReq 应收需求单
     * @return 结果
     */
    public AjaxResult insertReciveReq(ReciveReq reciveReq);

    /**
     * 修改应收需求单
     *
     * @param reciveReq 应收需求单
     * @return 结果
     */
    public AjaxResult updateReciveReq(ReciveReq reciveReq);

    /**
     * 批量删除应收需求单
     *
     * @param ids 需要删除的应收需求单主键集合
     * @return 结果
     */
    public AjaxResult deleteReciveReqByIds(Integer[] ids);

    /**
     * 删除应收需求单信息
     *
     * @param id 应收需求单主键
     * @return 结果
     */
    public AjaxResult deleteReciveReqById(Integer id);

    /**
     * @return com.ruoyi.common.core.web.domain.AjaxResult
     * @description 校验财务应收需求单编号
     * @date 2024/11/1 上午9:31
     * @Param orderCode:
     **/
    public AjaxResult checkReciveReqOrderCode(String orderCode);

    AjaxResult updateReciveStatus(ReciveReq reciveReq);

    ReciveReq getReciveReqByOrderCode(String orderCode);

    AjaxResult updateReciveOrderByOrderCodeOfVerMoney(ReciveReq reciveReq);
}
